[Linear Algebra] 3.rank & null space(kernel)

Linear Algebra
Author

신호연

Published

January 5, 2023

유투브 - 혁펜하임님의 선형대수학강의를 정리하기 위해 작성한 글입니다.

rank (행렬의 계수)

랭크란 임의의 행렬에서 선형독립(linearly independent)인 (열)벡터들의 최대갯수를 의미한다. 열공간은 열벡터들의 일차결합으로 생성되는 벡터공간이고 열공간의 기저는 선형독립인 벡터들의 집합들 중에서 원소의 갯수가 가장 많은 벡터들의 집합과 같으므로 행렬의 계수 = 열공간의 차원이 성립한다.

rank theorem

행렬에서의 랭크정리 : independent한 column의 수 = independent한 row의 수 또는 열공간의 차원 = 행공간의 차원
\[\text{rank}(A) = \text{rank}(A^T)\]

예제

\[\begin{pmatrix} 1&2&3\\ 0&0&0 \end{pmatrix}\]

위에 있는 행렬에서 선형독립인 열벡터의 갯수 = 1이다. 또한 선형독립인 열벡터의 갯수 = 선형독립인 행벡터의 갯수 = 열공간의 차원 = 행공간의 차원이므로 랭크정리도 성립한다.

위와 같은 \(2 \times 3\) 행렬은 랭크보다 행,열의 갯수가 많이 부족하므로 rank-deficient 라고 한다.

\[\begin{pmatrix} 1&0&1\\ 0&1&1 \end{pmatrix}\]

위에 있는 행렬에서 선형독립인 열벡터의 갯수 = 2이다. 또한 선형독립인 열벡터의 갯수 = 선형독립인 행벡터의 갯수 = 열공간의 차원 = 행공간의 차원이므로 랭크정리도 성립한다.

위와 같은 행렬은 행의 갯수만큼 랭크가 다 차있으므로 full row rank라 한다.

용어정리

\(A \in \mathbb{R}^{m \times n},\text{rank}(A) = n<m \Rightarrow\) 열벡터가 모두 선형독립,full column rank,위아래로 길쭉하고 양옆은 좁은 직사각행렬
\(A \in \mathbb{R}^{m \times n},\text{rank}(A) = n>m \Rightarrow\) 행벡터가 모두 선형독립,full row rank,위아래가 좁고 좌우 양옆으로 길쭉한 직사각행렬
\(A \in \mathbb{R}^{n \times n},\text{rank}(A) = n \Rightarrow\) 행백터,열벡터가 모두 선형독립,full rank,위,아래,양,옆의 길이가 모두 같은 정사각행렬
\(A \in \mathbb{R}^{m \times n},\text{rank}(A) < \text{min}(n,m)\) = 선형종속인 행벡터,열벡터 반드시 존재,rank deficient

Null Space

행렬\(A \in \mathbb{R}^{m \times n}\)의 영공간(Null Space,Kernel)은 \(Ax = 0\)을 만족하는 x의 집합이다.
\[N(A) = \{x\in K^n | Ax = {\bf{0}}\}\] \(x\)는 체(field)라는 집합으로부터 n개의 원소(스칼라)를 가져와서 구성된 벡터이므로 위와같이 표기한다.

Rank - Nulity theoreom

\(A \in \mathbb{R}^{m \times n}\) 행렬에서 다음이 성립한다. \[\text{rank}(A) + \text{dim}(N(A)) = n \Longleftrightarrow \text{rank}(A) + \text{nulity}(A) = n\] 행렬의 랭크와 영공간의 합은 항상 행렬의 열의 갯수와 같다는 정리이다. 여기서 nulity는 영공간의 차원과 같다.(증명 생략)

예제1)

행렬 A = \(\begin{pmatrix}1&0&1 \\0&1&1\end{pmatrix}\)일 때, 행렬A의 영공간은?

먼저 만족하는 \(x\)를 찾아보자. 어떤 방법이던 사용가능하지만 문제가 간단하므로 직관적으로 풀이한다.

\[\begin{aligned} &Ax = x_1\begin{pmatrix}1\\0\end{pmatrix} + x_2\begin{pmatrix}0 \\ 1\end{pmatrix} + x_3\begin{pmatrix}1\\1\end{pmatrix} = {\bf 0} \\ &\Longleftrightarrow \begin{cases} x_1 + x_3 = 0 \\ x_2 + x_3 = 0 \end{cases} \\ &\Longleftrightarrow x_3 = t,x_2 = -t,x_1 = t \\ &\Longleftrightarrow x = t\begin{pmatrix}1\\-1\\1\end{pmatrix} \\ &\therefore \text{N}(A) = \Bigg\{t\begin{pmatrix}1\\-1\\1 \end{pmatrix}|t \in \mathbb{R}\Bigg\} \end{aligned}\]

방정식의 해를 구해보니 1)\([1,-1,1]^T\)의 span이 영공간이며 2)영공간은 행렬곱에 의해서(중간에서 차원일치 \(2 \times 3 과 3 \times 1\)) 행벡터가 존재하는 차원인 3차원 벡터공간의 부분공간인 1차원 벡터공간을 생성함을 알 수 있다.

영공간의 원소(방정식의 해)는 무수히 많음이 자명한데 왜냐하면 \(Ax = 0\)을 만족하는 임의의 x벡터에 대한 스칼라배에 대해 다음이 성립하기 때문이다.

\[\begin{aligned} &Ax = {\bf 0} \\ &\Longleftrightarrow cAx = c{\bf 0} = {\bf 0} \\ &\Longleftrightarrow A(cx) ={\bf 0} \\ \end{aligned}\]

따라서 \(x\)의 스칼라배인 \(cx\)\(A\)와 곱해져서 \({\bf 0}\) 만들기 \(x\)의 스칼라배도 영공간의 원소이다.

rank-nulity theoreom도 성립함을 확인할 수 있다. 영공간의 차원은 영공간의 기저의 갯수인데 \([1,-1,1]^T\)이 기저의 조건인 1)선형생성 = 벡터공간 2)선형독립 이라는 두 조건을 만족하므로 차원은 1이다.랭크는 다른방식으로도 구할 수 있지만 행렬이 간단해서 바로2임을 확인할 수 있으므로 다음과 같다 \[\text{nulity}(A) + \text{rank}(A)= n \Longleftrightarrow 1 + 2 = 3\]

예제2)

행렬 A = \(\begin{pmatrix}1&2&3 \\0&0&0\end{pmatrix}\)일 때, 행렬A의 영공간은?

마찬가지로 만족하는 \(x\)를 먼저 찾아보자.

\[\begin{aligned} &Ax = x_1\begin{pmatrix}1\\0\end{pmatrix} + x_2\begin{pmatrix}2 \\ 0\end{pmatrix} + x_3\begin{pmatrix}3\\0\end{pmatrix} = {\bf 0} \\ &\Longleftrightarrow x_1 + 2x_2 + 3x_3 = 0 \\ &\Longleftrightarrow x_3 = t,x_2 = q,x_1 = -2q -3t \\ &\Longleftrightarrow x = \begin{pmatrix}-2q-3t\\q\\t\end{pmatrix} = q\begin{pmatrix}-2\\1\\0\end{pmatrix} + t\begin{pmatrix}-3\\0\\1\end{pmatrix} \\ &\therefore \text{N}(A) = \Bigg\{q\begin{pmatrix}-2\\1\\0 \end{pmatrix} + t\begin{pmatrix}-3\\0\\1\end{pmatrix}|t,q \in \mathbb{R}\Bigg\} \end{aligned}\]

방정식의 해를 구해보니 1)두 벡터의 span이 영공간이며 2)생성된 영공간은 행렬곱에 의해서(중간에서 차원일치 \(2 \times 3\)\(3 \times 1\)) 행벡터가 존재하는 차원인 3차원 벡터공간안에서 부분공간인 2차원 벡터공간을 생성함을 알 수 있다.

\(Ax = 0\)을 만족하는 2개의 x의 선형조합이 모두 영공간의 원소임을 확인해보자.

\[\begin{aligned} &Ax_1 = {\bf 0},Ax_2 = {\bf 0} \\ &\Longleftrightarrow cAx_1 = c{\bf 0}={\bf 0},cAx_2 = c{\bf 0}={\bf 0} \\ &\Longleftrightarrow A(cx_1) + A(cx_2) = A(cx_1 + cx_2) = {\bf 0} \\ \end{aligned}\]

따라서 \(x\) 방정식을 만족하는 두 벡터의 선형조합인 \(c(x_1 + cx_2)\)\(A\)와 곱해져서 영공간의 원소임을 알 수 있다.

마찬가지로 rank-nulity theoreom도 성립함을 확인할 수 있다. 영공간의 차원은 영공간의 기저의 갯수이고 \([-2,1,0]^T,[-3,0,1]^T\)가 기저의 조건인 1)선형생성 = 벡터공간(여기서 영공간) 2)선형독립 이라는 두 조건을 만족하므로 영공간의 기저는 \([-2,1,0]^T,[-3,0,1]^T\)이고 차원은 2이다.랭크는 다른방식으로도 구할 수 있지만 행렬이 간단해서 바로1임을 확인할 수 있으므로 다음과 같다 \[\text{nulity}(A) + \text{rank}(A)= n \Longleftrightarrow 2 + 1 = 3\]

Null Space와 Row Space는 수직이다.

행렬 \(A = \begin{pmatrix}a_1^T \\ a_2^T \\ \vdots \\ a_m^T\end{pmatrix} \in \mathbb{R}^{m \times n}\)와 벡터\(x \in \mathbb{R}^{n \times 1}\)의 곱은 다음과 같이 내적으로 볼 수 있다.

\[\begin{aligned} Ax = \begin{pmatrix} a_1^Tx \\ a_2^Tx \\ \vdots \\ a_m^Tx \end{pmatrix} \end{aligned}\]

만약 \(x\)가 영공간의 원소라면 다음이 성립한다.

\[\begin{aligned} &Ax = \begin{pmatrix} a_1^Tx \\ a_2^Tx \\ \vdots \\ a_m^Tx \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ \vdots \\ 0 \end{pmatrix} \text{ if } x \in N(A) \\ &\Longleftrightarrow a_1^Tx = a_2^Tx = \dots a_m^Tx = 0 \end{aligned}\]

행공간의 속하는 임의의 벡터\(c_1a_1^T + c_2a_2^T + \dots + c_ma_m^T \in R(A)\)와 영공간 벡터\(x\in N(A)\)와 내적을 취해보면 다음과 같다.

\[(c_1a_1^T + c_2a_2^T + \dots + c_ma_m^T)x = c_1a_1^Tx + c_2a_2^Tx + \dots + c_ma_m^Tx = 0\]

결과적으로,행공간에 속하는 임의의 벡터와 영공간에 속하는 임의의 벡터는 모두 수직이다. 그러므로, n차원(행공간과 영공간을 포함하는 벡터공간,A의 column의 갯수) 공간의 부분공간들인 행공간과 영공간은 수직이다.

코드로확인해보기? - 아직 실패 ..

Code
import numpy as np
from plotly.offline import iplot
import plotly.graph_objs as go
import plotly.io as pio
from plotly.subplots import make_subplots
b1 = np.array([-2,1,0])
b2 = np.array([-3,0,1])

A = np.array([
    [1,2,3],
    [0,0,0]
])
def create_null_space(b1,b2):
    x_coord = []
    y_coord = []
    z_coord = []
    for i in range(50000):
        t = np.random.uniform(-100,100,1)
        q = np.random.uniform(-100,100,1)
        x_null = b1 * t + b2*q
        #print(x_null)
        x_coord.append(x_null[0]) 
        y_coord.append(x_null[1])
        z_coord.append(x_null[2])
    return x_coord,y_coord,z_coord

def create_row_space(mat_A):
    x_coord = []
    y_coord = []
    z_coord = []
    
    for _ in range(50000):
        comb = np.zeros(3)
        for i in range(mat_A.shape[0]):
            row = mat_A[i]
            c = np.random.uniform(-50,50,1)
            comb += row * c
        x_coord.append(comb[0])
        y_coord.append(comb[1])
        z_coord.append(comb[2])
    return x_coord,y_coord,z_coord

row_spc_x,row_spc_y,row_spc_z = create_row_space(A)
null_spc_x,null_spc_y,null_spc_z  = create_null_space(b1,b2)
#visualization
#1. trace&data
trace1 = go.Scatter3d(
    x=null_spc_x,
    y=null_spc_y,
    z=null_spc_z,
    mode="markers",
    marker = dict(size=0.5)
)
trace2 = go.Scatter3d(
    x=row_spc_x,
    y=row_spc_y,
    z=row_spc_z,
    mode="lines"
)
data = [trace1,trace2]
#2 Layout
layout = go.Layout(title = dict(text = "N(A) and R(A)",x=0.5))
fig = go.Figure(data=data,layout=layout)
fig.show()

랭크정리 행공간,영공간

\[\text{Let} A \in \mathbb{R}^{m \times n},\] \[dim(N(A)) + rank(A) = dim(N(A)) + dim(R(A)) = n\]

Left Null Space와 Column Space도 수직이다.

\(A \in \mathbb{R}^{m \times n}\) 일 때,left null space는 다음과 같다.
\[N_L(A) = \{x^T \in K^m \ | x^TA = {\bf{0}}\}\]

랭크정리 열공간,좌영공간

(증명생략)

\[\text{Let} A \in \mathbb{R}^{m \times n},\] \[dim(N_L(A)) + rank(A) = dim(N_L(A)) + dim(C(A)) = m\]

정리

주요 부분공간 사이의 관계

그림출처 : Matrixology

1)null space와 row space 그리고 Left Null Space와 column space는 서로 수직이며 교점은 0벡터이다.
2)null space와 row space는 \(\mathbb{R}^n\)의 부분공간이며 left null space와 column space는 \(\mathbb{R}^m\)의 부분공간이다.행렬의 차원(\(A \in \mathbb{R}^{m \times n}\))을 생각해보면 당연하다.
3)row space와 column space의 차원은 rank(A)로 같다. null space,left null space의 차원은 각각 n-r , m-r 이다.(랭크-널리티 정리에 의하여) d를 헷갈리지 말자. 각각의 부분공간의 차원(dimenstion)을 의미하며 같은 값이 아니다.
4)row space의 원소인 \(x_r\)에 A를 곱하면 m차원 벡터공간의 부분공간인 \(C(A)\)의 원소가 된다.(행렬곱셈은 열공간의 일차결합,이때 x_r의 엄격한 차원은 생각하지 않는듯?)
5)null space의 원소인 \(x_n\)에 A를 곱하면 m차원 벡터공간의 원소이며 0벡터이다.
6)null space의 원소와 row space를 더해서 A를 곱하면 m차원 벡터공간의 부분공간인 \(C(A)\)의 원소가 된다. 이는 계산해보면 당연한데 \(Ax_n + Ax_r = Ax_n + 0 = Ax_r\) 이기 때문이다.

참고자료

bkvision - [선형대수학] 선형연립방정식(Ax = b)의 해 구하기)=> 랭크관련 용어정리
혁펜하임 - [선대] 2-10강. Null space (영공간)=>영공간,랭크 개념정리
위키피디아=>영공간 수학적인 정확한 정의